home *** CD-ROM | disk | FTP | other *** search
/ Aminet 40 / Aminet 40 (2000)(Schatztruhe)[!][Dec 2000].iso / Aminet / dev / lang / Python16_Src.lha / Python16_Source / Python / memmove.c < prev    next >
Encoding:
C/C++ Source or Header  |  2000-08-03  |  435 b   |  28 lines

  1. /* A perhaps slow but I hope correct implementation of memmove */
  2.  
  3. extern char *memcpy();
  4.  
  5. char *
  6. memmove(dst, src, n)
  7.     char *dst;
  8.     char *src;
  9.     int n;
  10. {
  11.     char *realdst = dst;
  12.     if (n <= 0)
  13.         return dst;
  14.     if (src >= dst+n || dst >= src+n)
  15.         return memcpy(dst, src, n);
  16.     if (src > dst) {
  17.         while (--n >= 0)
  18.             *dst++ = *src++;
  19.     }
  20.     else if (src < dst) {
  21.         src += n;
  22.         dst += n;
  23.         while (--n >= 0)
  24.             *--dst = *--src;
  25.     }
  26.     return realdst;
  27. }
  28.